For regular data like pixel values, displacement maps, texture coordinates, and other possible inputs to computer graphics algorithms, good performance demands tradeoffs between size, precision, and dynamic range. Compact data representations may not have enough precision to achieve the desired quality in the final output. Data representations that require more space can represent more values, but they increase bandwidth requirements and reduce performance. The most popular ordered data representations in contemporary graphics subsystems use 8 bits or 32 bits per element of data.
8-bit elements typically contain color components, displacement (height) factors, or other components of image-like data structures that serve as inputs to the texture mapping engine or outputs of the rasterization pipeline. Usually these 8-bit values are treated as fixed-point values that have been scaled by 1/255, so 0 corresponds to 0.0 and 255 corresponds to 1.0. When used as color components, 8-bit values do not have enough precision to encompass the gamuts of a variety of imaging input devices such as scanners and digital cameras and output devices such as printers, cathode ray tubes, and liquid crystal displays (LCDs). 8 bits also lacks the precision needed to contain intermediate results of multipass imaging algorithms.
32-bit values are typically standard IEEE floating point values, with a sign bit, 8 bits of exponent, and 23 bits of fraction. These values are used to represent spatial coordinates, texture coordinates, and other inputs to the transform and lighting or rasterization pipelines. 32-bit components are too large to be used in bandwidth-intensive portions of the rendering pipeline such as the texture mapping or alpha blending units. In any case, they often have more precision than is needed for these applications, making it difficult to justify the hardware cost of 32-bit support.